SnapKit简介

SnapKit能搞定什么

SnapKit是Masonry的Swift版,项目发布至今大约1年的时间,已经在github上有两千多个star,当然了,这其中也少不了"他爹"Masonry给他打的那些广告。

如果你还记得你在 StoryBoard 里面拉的那些线条,那你也一定记得其中 constriants 的表示方法:

SnapKit所做的就是这样一件事——让你这样写 constraints。

我们看看文章最顶部的那个需求用 SnapKit 如何实现:

view1.snp_makeConstraints { (make) -> Void in
    make.top.equalTo(superview).offset(10)
    make.left.equalTo(superview).offset(10)
    make.bottom.equalTo(superview).offset(-10)
    make.right.equalTo(superview).offset(-10)
}

对!就是这么简单!还可以更简单!!

view1.snp_makeConstraints { (make) -> Void in
    make.edges.equalTo(superview).insets(UIEdgeInsetsMake(10, 10, 10, 10))
}

继续看还能怎么写:

// 不只是相等哦,大于等于也是有的
make.centerX.lessThanOrEqualTo(view2.snp_left)
make.left.greaterThanOrEqualTo(label.snp_left)

// 不止是边缘哦,宽度高度也是有的
// width >= 200 && width <= 400
make.width.greaterThanOrEqualTo(200)
make.width.lessThanOrEqualTo(400)

// 其实可以简单点,一行搞定一个size
make.size.equalTo(CGSizeMake(50, 100))

// 链式操作,优先级想怎么搞就怎么搞
make.left.greaterThanOrEqualTo(label.snp_left).priorityLow()

// 妈妈再也不担心我不会排版了,什么向左5像素向下10像素我一行代码就搞定啦
make.center.equalTo(superview).offset(CGPointMake(-5, 10))

做起动画来也是一把好手!

view1.snp_makeConstraints { (make) -> Void in
  self.topConstraint = make.top.equalTo(superview).offset(padding.top).constraint
  make.left.equalTo(superview).offset(padding.left)
}

// then later you can call
self.topConstraint.uninstall()

// or if you want to update the constraint
self.topConstraint.updateOffset(5)

// 也可以用 snp_updateConstraints 实现上述需求

用SnapKit做了下面这个界面:

体验之后发现,其实用SnapKit和原生constraints的代码行数差不多,但是每一行从原来的极为冗长的一坨东西,变成了很容易阅读和维护的短小精干的代码,代码像下面这样优雅,这便是SnapKit最大的作用。

mapView.snp_makeConstraints { (make) -> Void in
  make.edges.equalTo(view)
}
locateImage.snp_makeConstraints { (make) -> Void in
  let topHeight = navigationController!.navigationBar.frame.height + UIApplication.sharedApplication().statusBarFrame.height
  make.centerX.equalTo(mapView)
  make.bottom.equalTo(mapView.snp_centerY).offset(topHeight/2)
}
filterBtn.snp_makeConstraints { (make) -> Void in
  make.left.equalTo(mapView).offset(15)
  make.right.equalTo(mapView).offset(-15)
  make.height.equalTo(40)
  make.bottom.equalTo(mapView).offset(-15)
}
trackBtn.snp_makeConstraints { (make) -> Void in
  make.bottom.equalTo(filterBtn.snp_top).offset(-15)
  make.right.equalTo(mapView).offset(-15)
}

1.CocoaPods

pod 'SnapKit', :git => 'https://github.com/SnapKit/SnapKit.git', :branch => 'swift-2.0'

2.Framework

  1. 在Github上下载SnapKit,选择iOS target 编译(Command+B),找到SnapKit.framework

  1. 右键“Show In Finder”

  1. 把这个文件拖到我们的工程中

  1. 如图,两处进行设置

  1. 然后我们就可以没羞没臊的在Swift方便的使用这个类似Masonry的第三方库啦!

Tips:

下载下来的SnapKit中有一个CodeSnippets文件夹,把里面的东西复制到

~/Library/Developer/Xcode/UserData/CodeSnippets

即可以快捷构造SnapKit的Autolayout构造模版,提高开发效率!

如图:

results matching ""

    No results matching ""